// 引入axios
import axios from "axios"
import {ElMessage} from "element-plus";

// 设置请求头的编码格式，以免乱码
axios.defaults.headers["content-type"] = "application/json;charset=utf-8"

// 创建axios对象
const service = axios.create({
    // 配置请求地址的公共部分，就可以统一管理
    baseURL:"http://localhost:8080/hubu",
    // 设置最长超时时间，单位是毫秒
    timeout:15000
})

//请求拦截器，前端想后端发送请求，并传递数据给后端
service.interceptors.request.use(config=>{
    // 在发送请求之前做一些处理，例如添加 token
    return config
},error=>{
    Promise.reject(error)
}) 

// 响应拦截器
service.interceptors.response.use(
    (response) => {
      // 对响应数据做一些处理
      const res = response.data;
      if (res.code !== 0) {
        // 如果返回的 code 不是 0，则提示错误信息
        ElMessage.error(res.message || '请求失败');
        return Promise.reject(new Error(res.message || '请求失败'));
      } else {
        return res;
      }
    },
    (error) => {
      // 对响应错误做一些处理
      if (error.response) {
        switch (error.response.status) {
          case 401:
            ElMessage.error('未授权，请重新登录');
            break;
          case 403:
            ElMessage.error('拒绝访问');
            break;
          case 404:
            ElMessage.error('请求的资源不存在');
            break;
          case 500:
            ElMessage.error('服务器内部错误');
            break;
          default:
            ElMessage.error(error.message || '请求失败');
        }
      } else {
        ElMessage.error('网络错误，请检查网络连接');
      }
      return Promise.reject(error);
    }
  );
  

//将该封装组件暴露
export default service